type KV = {
  k: string;
  v: string;
};

type QuizItem = {
  __typename: string;
  id: string;
  createAt: number;
  updatedAt: number;
  title: string;
  stdAnswer: string;
  opstype: string;
  options: [KV];
  description: string;
  descriptionMarkdown:string;
  m3U8: string;
  isMaster: boolean;
  masterId: string;
  master: QuizItem;

  clones: [QuizItem]
};

type Quiz = {
  __typename: string;
  id: string;
  createAt: number;
  updatedAt: number;
  seq: number;
  level: string;
  subject: string;
  m3U8: string;
  title: string;
  description: string;
  descriptionMarkdown: string;
  myEbpInfo: QuizEbpInfo;
  quizItems: [QuizItem];
};

type QuizEbpInfo = {
  userId: string;
  quizId: string;
  ebpAt: number;
};

type TaskType = {
  id: string;
  quizItemId: string;
  createdAt: number;
  updatedAt: number;
  status: string;
  from: string;
  snapshotAt: string;
  subject: string;
  title: string;
  description: string;
  assigneeId: string;
  ebpLastAt: number;
  ebpTimesTotal: number;
  ebpDifficulty: number;

  ebpForgetproba: number;
  ebpRecalltime: number;

  quizItem: QuizItem;
};



type Nodedge = {
  subject: string;
  predicate: string;
  object: string;
  properties: string;
  createdAt: number;
  updatedAt: number;
};

type TabType = {
  label: string,
  value: number,
  title: string,
  component: any,
  attributes: KV[],
};



type Word = {
  id: string;
  seq: number;
  word: string;
  level: string;
  title: string;
  description: string;
  audio: string;
  video: string;
  phonetic: string;
  exchange: string;
  zhtrans: string;
  jptrans: string;
  status: string;
  createdAt: number;
  updatedAt: number;
  from: string;
};

type File = {
  __typename: string;
  id: string;
  snapshotAt: string;
  fileName: string;
  fileMode: string;
  fileOwner: string;
  fileGroup: string;
  fileSize: string;
  title: string;
  description: string;
  content: string;
  createdAt: number;
  updatedAt: number;
  status: string;
  folderId: string;
  from: string;
  wordens: Word[];
};

type Folder = {
  __typename: string;
  id: string;
  folderName: string;
  snapshotAt: string;
  seq: number;
  title: string;
  description: string;
  refererUrl: string;
  ancestry: string;
  createdAt: number;
  updatedAt: number;
  status: string;
  pid: string;
  from: string;
  folders: Folder[];
  files: File[];
  quizzes: Quiz[];
};


type Editor = {
  __typename: string;
  id: string;
  snapshotAt: string;
  title: string;
  createdAt: number;
  updatedAt: number;
  status: string;
  from: string;
};


export type {
  KV, Quiz, QuizEbpInfo, QuizItem, TaskType,
  Nodedge, TabType,
  Word, File, Folder, Editor
};
